#ifndef COMPILE_ONLINE
#include "header.cpp"
#endif

// 测试函数
void testLRUCache()
{
    // 测试初始化
    LRUCache* cache = new LRUCache(2);

    // 测试插入元素
    cache->put(1, 1);
    cache->put(2, 2);

    // 测试获取元素
    int g=cache->get(1);
    if(g!=1) 
    {
        cout << "Error: Get key 1 failed" << endl;
        return;
    }
    cout << "Get key 1: " << g << endl;  // 预期输出: 1

    // 测试插入新元素，导致缓存满并淘汰最久未使用的元素
    cache->put(3, 3);

    // 测试获取已被淘汰的元素
    g=cache->get(2);
    if(g!=-1)
    {
        cout << "Error: Get key 2 failed" << endl;
        return;
    }
    cout << "Get key 2: " << g << endl;  // 预期输出: -1

    // 测试插入新元素
    cache->put(4, 4);

    // 测试获取已被淘汰的元素
    g=cache->get(1);
    if(g!=-1) 
    {
        cout << "Error: Get key 1 failed" << endl;
        return;
    }
    cout << "Get key 1: " << g << endl;  // 预期输出: -1

    // 测试获取新插入的元素
    g=cache->get(3);
    if(g!=3) 
    {
        cout << "Error: Get key 3 failed" << endl;
        return;
    }
    cout << "Get key 3: " << g << endl;  // 预期输出: 3
    g=cache->get(4);
    if(g!=4) 
    {
        cout << "Error: Get key 3 failed" << endl;
        return;
    }
    cout << "Get key 4: " << g << endl;  // 预期输出: 4

    delete cache;
}

int main()
{
    testLRUCache();
    return 0;
}